/**
 * 管理后台控制台页面脚本
 */
document.addEventListener('DOMContentLoaded', function() {
    // 检查登录状态
    if (!checkLoginStatus()) return;
    
    // 加载最新订单数据
    loadLatestOrders();
    
    // 加载推荐图书数据
    loadRecommendedBooks();
    
    // 加载热销图书数据
    loadHotBooks();
});

/**
 * 检查登录状态
 */
function checkLoginStatus() {
    const token = localStorage.getItem('adminToken');
    if (!token) {
        window.location.href = './login-Manager.html';
        return false;
    }
    return true;
}

/**
 * 加载最新订单数据
 */
function loadLatestOrders() {
    axios.get('/orders/page', {
        params: {
            page: 0,
            size: 5,
            sort: 'createdAt',
            direction: 'DESC'
        }
    })
    .then(response => {
        if (response.data.success) {
            renderLatestOrders(response.data.data.content);
        } else {
            console.error('加载最新订单失败:', response.data.message);
        }
    })
    .catch(error => {
        console.error('加载最新订单出错:', error);
    });
}

/**
 * 渲染最新订单列表
 * @param {Array} orders 订单数据
 */
function renderLatestOrders(orders) {
    if (!orders || orders.length === 0) return;
    
    const orderTableBody = document.querySelector('.order-table tbody');
    if (!orderTableBody) return;
    
    // 清空现有内容
    orderTableBody.innerHTML = '';
    
    // 添加订单数据
    orders.forEach(order => {
        const statusClass = getOrderStatusClass(order.status);
        const statusText = getOrderStatusText(order.status);
        
        // 根据订单状态决定显示的按钮
        let actionButton = '';
        if (order.status === '已付款') {
            actionButton = `<button class="btn-action" data-id="${order.id}" onclick="shipOrder(${order.id})">发货</button>`;
        } else {
            actionButton = `<button class="btn-action" data-id="${order.id}" onclick="viewOrderDetail(${order.id})">查看</button>`;
        }
        
        const row = document.createElement('tr');
        row.innerHTML = `
            <td>#${order.orderNumber || order.id}</td>
            <td>${order.userId || '未知用户'}</td>
            <td>${getOrderItemsText(order.items)}</td>
            <td>￥${order.totalAmount.toFixed(2)}</td>
            <td><span class="status ${statusClass}">${statusText}</span></td>
            <td>${formatDate(order.createdAt)}</td>
            <td>${actionButton}</td>
        `;
        orderTableBody.appendChild(row);
    });
}

/**
 * 获取订单状态对应的CSS类名
 * @param {string} status 订单状态
 * @returns {string} CSS类名
 */
function getOrderStatusClass(status) {
    switch (status) {
        case 'PENDING': return 'pending';
        case 'PAID': return 'pending';
        case 'SHIPPED': return 'shipped';
        case 'DELIVERED': return 'completed';
        case 'CANCELLED': return 'cancelled';
        default: return 'pending';
    }
}

/**
 * 获取订单状态对应的中文文本
 * @param {string} status 订单状态
 * @returns {string} 状态文本
 */
function getOrderStatusText(status) {
    switch (status) {
        case '待付款': return '待付款';
        case '待发货': return '待发货';
        case '已发货': return '已发货';
        case '已付款': return '已付款';
        case '已完成': return '已完成';
        case '已取消': return '已取消';
        default: return '未知状态';
    }
}

/**
 * 获取订单商品文本
 * @param {Array} orderItems 订单项
 * @returns {string} 商品文本
 */
function getOrderItemsText(orderItems) {
    if (!orderItems || orderItems.length === 0) return '无商品';
    
    // 只显示第一个商品，如果有多个则显示"等"
    const firstItem = orderItems[0];
    const bookName = firstItem.bookTitle || '未知商品';
    
    if (orderItems.length > 1) {
        return `${bookName} 等${orderItems.length}件商品`;
    }
    return bookName;
}

/**
 * 发货处理函数
 * @param {number} orderId 订单ID
 */
function shipOrder(orderId) {
    if (confirm('确定要为该订单发货吗？')) {
        // 显示加载中
        const loadingMsg = layer.msg('正在处理...', {
            icon: 16,
            shade: 0.3,
            time: 0
        });
        
        // 调用更新状态API
        OrderAPI.updateStatus(orderId,'已发货')
            .then(response => {
                layer.close(loadingMsg);
                
                if (response) {
                    layer.msg('发货成功！', {icon: 1});
                    // 重新加载订单数据
                    loadLatestOrders();
                } else {
                    layer.msg(response.message || '发货失败', {icon: 2});
                }
            })
            .catch(error => {
                layer.close(loadingMsg);
                console.error('发货出错:', error);
                layer.msg('发货失败，请稍后再试', {icon: 2});
            });
    }
}

/**
 * 查看订单详情
 * @param {number} orderId 订单ID
 */
function viewOrderDetail(orderId) {
    window.location.href = `./order-Manager.html?id=${orderId}`;
}

/**
 * 加载推荐图书数据
 */
function loadRecommendedBooks() {
    axios.get('/books/page', {
        params: {
            page: 0,
            size: 6,
            sort: 'createdAt',
            direction: 'DESC'
        }
    })
    .then(response => {
        if (response.data.success) {
            renderBookList(response.data.data.content, 'salesChart');
        } else {
            console.error('加载推荐图书失败:', response.data.message);
        }
    })
    .catch(error => {
        console.error('加载推荐图书出错:', error);
    });
}

/**
 * 加载热销图书数据
 */
function loadHotBooks() {
    axios.get('/books/page', {
        params: {
            page: 0,
            size: 6,
            sort: 'salesCount',
            direction: 'DESC'
        }
    })
    .then(response => {
        if (response.data.success) {
            renderBookList(response.data.data.content, document.querySelectorAll('.chart-container')[1].id);
        } else {
            console.error('加载热销图书失败:', response.data.message);
        }
    })
    .catch(error => {
        console.error('加载热销图书出错:', error);
    });
}

/**
 * 渲染图书列表
 * @param {Array} books 图书数据
 * @param {string} containerId 容器ID
 */
function renderBookList(books, containerId) {
    if (!books || books.length === 0) return;
    
    const container = document.getElementById(containerId);
    if (!container) return;
    
    // 清空现有内容
    container.innerHTML = '';
    
    // 添加图书数据
    books.forEach(book => {
        const bookDiv = document.createElement('div');
        bookDiv.className = 'chart-container-1';
        bookDiv.innerHTML = `
            <img src="${book.imageUrl || './img/default-book.jpg'}" alt="${book.title}">
            <div class="booksInfo">${book.description || '暂无描述'}</div>
            <div class="booksPrice">￥${book.price.toFixed(2)}</div>
        `;
        container.appendChild(bookDiv);
    });
}

/**
 * 格式化日期
 * @param {string} dateString 日期字符串
 * @returns {string} 格式化后的日期
 */
function formatDate(dateString) {
    if (!dateString) return '';
    
    const date = new Date(dateString);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hours = String(date.getHours()).padStart(2, '0');
    const minutes = String(date.getMinutes()).padStart(2, '0');
    
    return `${year}-${month}-${day} ${hours}:${minutes}`;
}